package top.drose;

import java.util.ArrayDeque;
import java.util.Scanner;

import static java.lang.Math.max;

public class P15_1 {
    static int[] s=new int[100005];
    static Scanner sc=new Scanner(System.in);
    static ArrayDeque<Integer> dq=new ArrayDeque<>();
    public static void main(String[] args) {
        int n=sc.nextInt();;
        int m=sc.nextInt();
        for(int i=1;i<=n;i++) s[i]=sc.nextInt();
        for(int i=1;i<=m;i++) s[i]=s[i]+s[i-1];
        int ans= (int) -1e8;
        dq.addLast(0);
        for(int i=1;i<=n;i++){
            while(  !dq.isEmpty()  &&  dq.getFirst()<i-m  ){
                dq.removeFirst();
            }
            if(dq.isEmpty()) ans=max(ans,s[i]);
            else ans=max(ans,s[i]-s[dq.getFirst()]);
            while(!dq.isEmpty()  &&  dq.getLast()>=s[i]  ){
                dq.removeLast();
            }
            dq.addLast(i);
        }
        System.out.printf("%d",ans);
        return;
    }
}
